<?php
class Naplo extends AppModel {

	var $name = 'Naplo';
	//var $uses = array('Szamla');
	/*var $validate = array(
		'valutak_id' => array('numeric'),
		'kod' => array('alphanumeric'),
		'nev' => array('alphanumeric'),
		'alapertelmezett_osztaly' => array('numeric')
	);*/

	//The Associations below have been created with all possible keys, those that are not needed can be removed
	var $belongsTo = array(
			'Valuta' => array('className' => 'Valuta',
								'foreignKey' => 'valuta_id',
								'conditions' => '',
								'fields' => '',
								'order' => ''
			),
			'Naplotipus' => array('className' => 'Naplotipus',
								'foreignKey' => 'naplotipus_id',
								'conditions' => '',
								'fields' => '',
								'order' => ''
			)
	);

	var $hasMany = array(
			'Bizonylat' => array('className' => 'Bizonylat',
								'foreignKey' => 'naplo_id',
								'dependent' => false,
								'conditions' => '',
								'fields' => '',
								'order' => '',
								'limit' => '',
								'offset' => '',
								'exclusive' => '',
								'finderQuery' => '',
								'counterQuery' => ''
			)
	);

/**
 * Létezik a $naploid?
 * @param int $naploId a használt napló azonosítója
 * @return $naplo naplo adatok
 */
	function isValidId($naploId = null){
		$this->recursive = -1;
		if($naploId){
			//meg kell nézni, hogy létező $naploid-t adtunk-e meg
			if($naplo = $this->findById($naploId)){
				return $naplo;
			}
		}
		return false;
	}

/**
 *Alapértelmezett osztályId lekérdezése
 *@param int $naploId a használt napló azonosítója
 *@return int $osztalyId
 */
	function getOsztalyId($naploId = null){
		//$this->recursive = -1;
		if($naploId){
			return($this->field('alapertelmezett_osztaly', array('Naplo.id' => $naploId)));
		}
		return false;
	}

/**
 *valutaId lekérdezése
 *@param int $naploId a használt napló azonosítója
 *@return int $valutaId
 */
	function getValutaId($naploId = null){
		//$this->recursive = -1;
		if($naploId){
			return($this->field('valuta_id', array('Naplo.id' => $naploId)));
		}
		return false;
	}

/**
 *alapértelmezett számla id lekérdezése
 *@param int $naploId a használt napló azonosítója
 *@return int $szamla számla id
 */
	function getSzamla($naploId = null){
		//$this->recursive = -1;
		if($naploId){
			$szamla = $this->field('alapertelmezett_szamla', array('Naplo.id' => $naploId));
			if($szamla)
				return($szamla);
			else
				return false;
		}
		return false;
	}

/**
 * a napló adatainak lekérdezése
 * @param int $osztalyId az alapértelmezett osztály id-je
 * @param int $valutaId a napló valutája
 * @param int $ev a szóban forgó év
 * @return array a keresett napló adatai
 */
	function getNaplo($osztalyId = null, $valutaId = null, $ev = null){
		if($osztalyId && $valutaId && $ev){
			$naplo = $this->find('first',
							array(
								'conditions' => array(
														'alapertelmezett_osztaly' => $osztalyId,
														'valuta_id' => $valutaId,
														'ev' => $ev,
														'lezart' => 0	//a napló nyitva van
														),
								'recursive' => -1
							)
							);
			if(isset($naplo['Naplo']))
				return $naplo['Naplo'];
			else
				return false;
		}
		return false;
	}
	
/**
 *Vegyes napló id-jének lekérdezése
 * @param array $params
 * 					ev			melyik évben keresgéljünk
 * 					cegId		melyik cégben keresgéljünk
 * @return int $id
 */
	function getVegyesId($params){
		if(!$params['ev'] || !$params['cegId'])
			throw new NotImplementedException('Hiányzik a Naplo->getVegyesId hívásnál az év vagy a cegId!');

		$this->unbindModel(array('belongsTo' => array('Valuta'), 'hasMany' => array('Bizonylat')));
		$vegyes = $this->find('first',
							array(
								'conditions' => array(
														'Naplotipus.kod' => 'E',	//TODO hardcoded
														'ceg_id' => $params['cegId'],
														'ev' => $params['ev'],
														'lezart' => 0	//a napló nyitva van
														)));
		if($vegyes)
			return $vegyes['Naplo']['id'];
		return false;
	}

/**
 * a napló évének lekérdezése
 * @param int $naploId a napló id-je
 * @return int ev a naló éve
 */
	function getEv($naploId){
		if(!$naploId)
			throw new NotImplementedException('Hiányzik a Naplo->getEv hívásnál a napló id!');

		$this->unbindModel(array('belongsTo' => array('Valuta'), 'hasMany' => array('Bizonylat')));
		$n = $this->find('first',
						 array(
							'conditions' => array('Naplo.id' => $naploId),
							'fields' => array('Naplo.ev')
							)
						 );
		//debug($n);
		return $n['Naplo']['ev'];
	}

/**
 * a napló id lekérdezése
 * @param int $szamlaId a napló alapértelmezett számla id-je
 * @param int $ev melyik évről van szó
 * @return int naló id
 */
	function getNaploId($szamlaId, $ev){
		if(!$szamlaId)
			throw new NotImplementedException('Hiányzik a Naplo->getId hívásnál a napló alapértelmezett számla id-je!');
		if(!$ev)
			throw new NotImplementedException('Hiányzik a Naplo->getId hívásnál a napló éve!');

		$this->unbindModel(array('belongsTo' => array('Valuta'), 'hasMany' => array('Bizonylat')));
		$n = $this->find('first',
						 array(
							'conditions' => array('Naplo.alapertelmezett_szamla' => $szamlaId,
												  'Naplo.ev' => $ev),
							'fields' => array('Naplo.id')
							)
						 );
		//debug($n);
		return $n['Naplo']['id'];
	}

}
?>